package org.huawei260.TiKu.B;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Scanner;

/**
 * @Auther: qingle
 * @Date: 2024/10/27-21:49
 * @Description:
 *
 * 题目描述
 * 一群大雁往南飞，给定一个字符串记录地面上的游客听到的大雁叫声，请给出叫声最少由几只大雁发出。
 *
 *
 *
 * 具体的：
 *
 * 1. 大雁发出的完整叫声为 "quack"，因为有多只大雁同一时间嘎嘎作响，所以字符串中可能会混合多个"quack"。
 *
 * 2. 大雁会依次完整发出"quack"，即字符串中 "q" ,"u", "a", "c", "k" 这 5 个字母按顺序完整存在才能计数为一只大雁。如果不完整或者没有按顺序则不予计数。
 *
 * 3. 如果字符串不是由"q" ,"u", "a", "c", "k"字符组合而成，或者没有找到一只大雁，请返回-1。
 *
 * 输入格式
 * 一个字符串，包含大雁 quack 的叫声。1 <= 字符串长度 <= 1000，字符串中的字符只有 "q" ,"u", "a", "c", "k"。
 * 输出格式
 * 大雁的数量
 * 输入样例    复制
 * quackquack
 * 输出样例    复制
 * 1
 * @version: 1.0
 */
public class B_2510_数大雁2 {
//	public class GeeseQuackCounter {
//		public static void main(String[] args) {
//			System.out.println(minGeese("quackquack")); // 输出 1
//			System.out.println(minGeese("qaauucqckk")); // 输出 -1
//			System.out.println(minGeese("quacqkuac")); // 输出 1
//			System.out.println(minGeese("qququaauqccauqkkcauqqkcauuqkcaaukccakkck")); // 输出 5
//		}
//
//
//	public class Main {
//import java.util.Scanner;
//
//	public class Main {
		public static void main(String[] args) {
			Scanner sc = new Scanner(System.in);
			String quacks = sc.next();
			System.out.println(getResult(quacks));
			sc.close();
		}

		public static int getResult(String quacks) {
			int count = 0;
			int index = 0;
			int[] quackIndex = new int[5];
			boolean isFind = false;

			for (int i = 0; i < quacks.length(); i++) {
				char ch = quacks.charAt(i);
				switch (ch) {
					case 'q':
						quackIndex[index++] = i;
						break;
					case 'u':
						if (index > 0 && quackIndex[index - 1] < i - 1) {
							quackIndex[index++] = i;
						}
						break;
					case 'a':
						if (index > 1 && quackIndex[index - 1] < i - 1 && quackIndex[index - 2] < i - 2) {
							quackIndex[index++] = i;
						}
						break;
					case 'c':
						if (index > 2 && quackIndex[index - 1] < i - 1 && quackIndex[index - 2] < i - 2 && quackIndex[index - 3] < i - 3) {
							quackIndex[index++] = i;
						}
						break;
					case 'k':
						if (index == 4 && quackIndex[index - 1] < i - 1 && quackIndex[index - 2] < i - 2 && quackIndex[index - 3] < i - 3 && quackIndex[index - 4] < i - 4) {
							isFind = true;
							count++;
							// Remove the found "quack" from the string
							for (int j : quackIndex) {
								quacks = quacks.substring(0, j) + "," + quacks.substring(j + 1);
							}
							quackIndex = new int[5];
							index = 0;
						} else if (index > 3 && quackIndex[index - 1] < i - 1 && quackIndex[index - 2] < i - 2 && quackIndex[index - 3] < i - 3 && quackIndex[index - 4] < i - 4) {
							isFind = true;
							count++;
							for (int j : quackIndex) {
								quacks = quacks.substring(0, j) + "," + quacks.substring(j + 1);
							}
							quackIndex = new int[5];
							index = 0;
						}
						break;
					default:
						break;
				}
			}

			return count == 0 ? -1 : count;
		}
	}